package projet_ihm;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class Action {
	private E_TypeAction typeAction;
	private ArrayList<Produit> listeProduit;

	public Action() {
		this.typeAction = null;
		this.listeProduit = new ArrayList<Produit>();

	}

	public Action(Action action) {
		this.typeAction = action.typeAction;
		this.listeProduit = new ArrayList<Produit>(action.listeProduit);
	}

	public E_TypeAction getTypeAction() {
		return typeAction;
	}

	public void setTypeAction(E_TypeAction typeAction) {
		this.typeAction = typeAction;
	}

	public ArrayList<Produit> getListeProduit() {
		return listeProduit;
	}

	public void setListeProduit(ArrayList<Produit> listeProduit) {
		this.listeProduit = listeProduit;
	}

	public int AjoutSansDate(Produit p, HashMap<E_Type, ArrayList> inventaire) {
		if (inventaire.containsKey(p.getType())) {
			inventaire.get(p.getType()).add(p);
		} else {
			ArrayList<Produit> l = new ArrayList<Produit>();
			l.add(p);
			inventaire.put(p.getType(), l);
		}
		this.typeAction = E_TypeAction.Ajouter;
		this.listeProduit.add(p);
		System.out.println(this.listeProduit);
		return 1;

	}

	public int AjoutAvecDate(P_Avec_Date p,
			HashMap<E_Type, ArrayList> inventaire) {
		if (inventaire.containsKey(p.getType())) {
			inventaire.get(p.getType()).add(p);
		}

		else {

			ArrayList<Produit> l = new ArrayList<Produit>();
			l.add(p);
			inventaire.put(p.getType(), l);
		}
		this.typeAction = E_TypeAction.Ajouter;
		this.listeProduit.add(p);
		return 1;
	}

	public int SupprimerProduit(String chaine,
			HashMap<E_Type, ArrayList> inventaire) {

		String[] mot = chaine.split(" ");
		E_Type type = E_Type.valueOf(mot[0]);

		int index = Integer.parseInt(mot[1]);
		if ((index < 0) || (index > inventaire.get(type).size())) {
			System.out.println("erreur pas de produit correspondant");
		} else {
			this.typeAction = E_TypeAction.Supprimer;
			this.listeProduit
					.add((Produit) inventaire.get(type).get(index - 1));
			inventaire.get(type).remove(index - 1);
			return 1;
		}
		return 0;
	}

	
	 
	
	public void enleveNb(Frigo f) {

		System.out
				.println("*******indiquez le numéro du produit et la quantité à suprimmer*******");
		System.out
				.println("(ex:r  Fruit 1 5 , 5 = quantite, Fruit = type, 1 = l'emplacement dans le type .)");
		Scanner enre = new Scanner(System.in);
		String chaine = enre.nextLine();
		String[] mot = chaine.split(" ");

		String motTmp = mot[0] + mot[1];

		E_Type type = E_Type.valueOf(mot[0]);

		int nbAjout = Integer.parseInt(mot[2]);
		int index = Integer.parseInt(mot[1]);
		int nb = ((Produit) f.inventaire.get(type).get(index - 1)).getNb()
				- nbAjout;

		if ((index < 0) || (index > f.inventaire.get(type).size())) {
			System.out.println("erreur pas de produit correspondant");
		} else {
			this.typeAction = E_TypeAction.DiminuerQuantite;
			this.listeProduit.add((Produit) f.inventaire.get(type).get(
					index - 1));
			((Produit) f.inventaire.get(type).get(index - 1)).setNb(nb);
			if (nb <= 0) {
				this.SupprimerProduit(chaine, f.inventaire);
			}
		}
	}

	public void ajoutNb(Frigo f) {

		System.out
				.println("*******indiquez le numéro du produit et la quantité à ajouter*******");
		System.out
				.println("(ex:r  Fruit 1 5 , 5 = quantite, Fruit = type, 1 = l'emplacement dans le type .)");
		Scanner enre = new Scanner(System.in);
		String chaine = enre.nextLine();
		String[] mot = chaine.split(" ");

		E_Type type = E_Type.valueOf(mot[0]);

		int nbAjout = Integer.parseInt(mot[2]);
		int index = Integer.parseInt(mot[1]);
		int nb = ((Produit) f.inventaire.get(type).get(index - 1)).getNb()
				+ nbAjout;

		if ((index < 0) || (index > f.inventaire.get(type).size())) {
			System.out.println("erreur pas de produit correspondant");
		} else {
			this.typeAction = E_TypeAction.AugmenterQuantite;
			this.listeProduit.add((Produit) f.inventaire.get(type).get(
					index - 1));
			((Produit) f.inventaire.get(type).get(index - 1)).setNb(nb);
		}
	}
}
